package co.edu.javeriana.konigsberg.xavier.gui.bean;

import java.math.BigInteger;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import co.edu.javeriana.konigsberg.xavier.dto.DepartamentoDTO;
import co.edu.javeriana.konigsberg.xavier.servicio.DepartamentoServicioLocal;
import co.edu.javeriana.konigsberg.xavier.servicio.PaisServicioLocal;

@ManagedBean(name="departamentoBean")
@SessionScoped
public class DepartamentoBean extends ManagerBean{
	private static final long serialVersionUID = 1L;
	
	@EJB
	private DepartamentoServicioLocal departamentoServicio;
	@EJB
	private PaisServicioLocal paisServicioLocal;
	
	@ManagedProperty(value="#{paisBean}")
	private PaisBean paisBean;
	
	public void setPaisBean(PaisBean paisBean) {
		this.paisBean = paisBean;
	}
	
	//====================== Principal Principio ============================//
	
	private BigInteger idDepartamento;
	
	private TreeMap<String,BigInteger> departamentos;
	
	public void cuandoPaisCambie() {
	   departamentos = new TreeMap<String, BigInteger>();
	   List<DepartamentoDTO> departamentoDTOs = departamentoServicio.obtenerListaDePadre(paisBean.obtenerSeleccionado());
	   for (DepartamentoDTO departamentoDTO : departamentoDTOs) {
		   departamentos.put(departamentoDTO.getNombreDepartamento(), departamentoDTO.getIdDepartamento());
	   }
	}
	
	public Map<String, BigInteger> getDepartamentos() {
		return departamentos;
	}
	public void setDepartamentos(TreeMap<String, BigInteger> paises) {
		this.departamentos = paises;
	}
	
	public DepartamentoDTO obtenerSeleccionado(){
		DepartamentoDTO departamentoDTO = departamentoServicio.obtenerDepartamentoPorId(getIdDepartamento());
		return departamentoDTO;
	}

	public BigInteger getIdDepartamento() {
		return idDepartamento;
	}

	public void setIdDepartamento(BigInteger idDepartamento) {
		this.idDepartamento = idDepartamento;
	}

	//====================== Principal Fin ============================//
	
	//====================== Segunda Principio ============================//
	
	private BigInteger idDepartamento_02;
	
	private TreeMap<String,BigInteger> departamentos_02;
	
	public void cuandoPaisCambie_02() {
	   departamentos_02 = new TreeMap<String, BigInteger>();
	   List<DepartamentoDTO> departamentoDTOs = departamentoServicio.obtenerListaDePadre(paisBean.obtenerSeleccionado_02());
	   for (DepartamentoDTO departamentoDTO : departamentoDTOs) {
		   departamentos_02.put(departamentoDTO.getNombreDepartamento(), departamentoDTO.getIdDepartamento());
	   }
	}
	
	public Map<String, BigInteger> getDepartamentos_02() {
		return departamentos_02;
	}
	public void setDepartamentos_02(TreeMap<String, BigInteger> departamentos_02) {
		this.departamentos_02 = departamentos_02;
	}
	
	public DepartamentoDTO obtenerSeleccionado_02(){
		DepartamentoDTO departamentoDTO = departamentoServicio.obtenerDepartamentoPorId(getIdDepartamento_02());
		return departamentoDTO;
	}

	public BigInteger getIdDepartamento_02() {
		return idDepartamento_02;
	}

	public void setIdDepartamento_02(BigInteger idDepartamento_02) {
		this.idDepartamento_02 = idDepartamento_02;
	}

	//====================== Segunda Fin ============================//
	
	//====================== Tercera Principio ============================//
	
	private BigInteger idDepartamento_03;
	
	private TreeMap<String,BigInteger> departamentos_03;
	
	public void cuandoPaisCambie_03() {
	   departamentos_03 = new TreeMap<String, BigInteger>();
	   List<DepartamentoDTO> departamentoDTOs = departamentoServicio.obtenerListaDePadre(paisBean.obtenerSeleccionado_03());
	   for (DepartamentoDTO departamentoDTO : departamentoDTOs) {
		   departamentos_03.put(departamentoDTO.getNombreDepartamento(), departamentoDTO.getIdDepartamento());
	   }
	}
	
	public Map<String, BigInteger> getDepartamentos_03() {
		return departamentos_03;
	}
	public void setDepartamentos_03(TreeMap<String, BigInteger> departamentos_03) {
		this.departamentos_03 = departamentos_03;
	}
	
	public DepartamentoDTO obtenerSeleccionado_03(){
		DepartamentoDTO departamentoDTO = departamentoServicio.obtenerDepartamentoPorId(getIdDepartamento_03());
		return departamentoDTO;
	}

	public BigInteger getIdDepartamento_03() {
		return idDepartamento_03;
	}

	public void setIdDepartamento_03(BigInteger idDepartamento_03) {
		this.idDepartamento_03 = idDepartamento_03;
	}

	//====================== Tercera Fin ============================//
	
}
